{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import keras\n",
    "import numpy as np\n",
    "import os,random\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Conv2D, MaxPooling2D, Dense, Flatten, Dropout, Activation\n",
    "from keras.layers.normalization import BatchNormalization\n",
    "from keras.optimizers import Adam,SGD\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "%load_ext autoreload"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CIFAR-10 dataset\n",
    "The [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) dataset consists of 60000 32x32 colour images in 10 classes, with 6000 images per class. There are 50000 training images and 10000 test images. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(50000, 32, 32, 3) (50000, 10)\n",
      "(10000, 32, 32, 3) (10000, 10)\n"
     ]
    }
   ],
   "source": [
    "def unpickle(file):\n",
    "    import pickle\n",
    "    with open(file, 'rb') as fo:\n",
    "        dict = pickle.load(fo, encoding='bytes')\n",
    "    return dict\n",
    "\n",
    "def one_hot(label):\n",
    "    a = np.zeros(10)\n",
    "    a[label] = 1\n",
    "    return a\n",
    "\n",
    "def load_CIFAR_batch(filename):\n",
    "    datadict = unpickle(filename)\n",
    "    X = datadict[b'data']\n",
    "    X = X.reshape(10000, 3, 32, 32).transpose(0, 2, 3, 1).astype(np.float32)\n",
    "    Y = datadict[b'labels']\n",
    "    Y = [one_hot(lbl) for lbl in Y]\n",
    "    Y = np.array(Y)\n",
    "    return X, Y\n",
    "\n",
    "def load_CIFAR10(ROOT):\n",
    "    xs = []\n",
    "    ys = []\n",
    "    for b in range(1, 6):\n",
    "        f = os.path.join(ROOT, 'data_batch_%d' % (b))\n",
    "        X, Y = load_CIFAR_batch(f)\n",
    "        xs.append(X)\n",
    "        ys.append(Y)\n",
    "    Xtr = np.concatenate(xs)\n",
    "    Ytr = np.concatenate(ys)\n",
    "    del X, Y\n",
    "    Xte, Yte = load_CIFAR_batch(os.path.join(ROOT, 'test_batch'))\n",
    "    # Xtr -= Xtr.mean(axis=0)\n",
    "    # Xte -= Xte.mean(axis=0)\n",
    "    return Xtr, Ytr, Xte, Yte\n",
    "\n",
    "X, Y, X_te, Y_te = load_CIFAR10('cifar-10-batches-py')\n",
    "print(X.shape, Y.shape)\n",
    "print(X_te.shape, Y_te.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x253f22c6550>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x253f226f9b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n = random.randint(0, X.shape[0])\n",
    "plt.imshow(X[n])\n",
    "plt.title(np.argmax(Y[n]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Define Keras Model\n",
    "The use of [Batch Normalization](https://arxiv.org/abs/1502.03167) has significantly accelerated the training.\n",
    "\n",
    "[Dropout](https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf) also reduces overfitting problem for this not so deep neural network."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv2d_1 (Conv2D)            (None, 32, 32, 32)        896       \n",
      "_________________________________________________________________\n",
      "batch_normalization_1 (Batch (None, 32, 32, 32)        96        \n",
      "_________________________________________________________________\n",
      "activation_1 (Activation)    (None, 32, 32, 32)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_2 (Conv2D)            (None, 32, 32, 32)        9248      \n",
      "_________________________________________________________________\n",
      "batch_normalization_2 (Batch (None, 32, 32, 32)        96        \n",
      "_________________________________________________________________\n",
      "activation_2 (Activation)    (None, 32, 32, 32)        0         \n",
      "_________________________________________________________________\n",
      "max_pooling2d_1 (MaxPooling2 (None, 16, 16, 32)        0         \n",
      "_________________________________________________________________\n",
      "dropout_1 (Dropout)          (None, 16, 16, 32)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_3 (Conv2D)            (None, 16, 16, 64)        18496     \n",
      "_________________________________________________________________\n",
      "batch_normalization_3 (Batch (None, 16, 16, 64)        192       \n",
      "_________________________________________________________________\n",
      "activation_3 (Activation)    (None, 16, 16, 64)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_4 (Conv2D)            (None, 16, 16, 64)        36928     \n",
      "_________________________________________________________________\n",
      "batch_normalization_4 (Batch (None, 16, 16, 64)        192       \n",
      "_________________________________________________________________\n",
      "activation_4 (Activation)    (None, 16, 16, 64)        0         \n",
      "_________________________________________________________________\n",
      "max_pooling2d_2 (MaxPooling2 (None, 8, 8, 64)          0         \n",
      "_________________________________________________________________\n",
      "dropout_2 (Dropout)          (None, 8, 8, 64)          0         \n",
      "_________________________________________________________________\n",
      "conv2d_5 (Conv2D)            (None, 8, 8, 128)         73856     \n",
      "_________________________________________________________________\n",
      "batch_normalization_5 (Batch (None, 8, 8, 128)         384       \n",
      "_________________________________________________________________\n",
      "activation_5 (Activation)    (None, 8, 8, 128)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_6 (Conv2D)            (None, 8, 8, 128)         147584    \n",
      "_________________________________________________________________\n",
      "batch_normalization_6 (Batch (None, 8, 8, 128)         384       \n",
      "_________________________________________________________________\n",
      "activation_6 (Activation)    (None, 8, 8, 128)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_7 (Conv2D)            (None, 8, 8, 128)         147584    \n",
      "_________________________________________________________________\n",
      "batch_normalization_7 (Batch (None, 8, 8, 128)         384       \n",
      "_________________________________________________________________\n",
      "activation_7 (Activation)    (None, 8, 8, 128)         0         \n",
      "_________________________________________________________________\n",
      "max_pooling2d_3 (MaxPooling2 (None, 4, 4, 128)         0         \n",
      "_________________________________________________________________\n",
      "dropout_3 (Dropout)          (None, 4, 4, 128)         0         \n",
      "_________________________________________________________________\n",
      "flatten_1 (Flatten)          (None, 2048)              0         \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 512)               1049088   \n",
      "_________________________________________________________________\n",
      "dropout_4 (Dropout)          (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 10)                5130      \n",
      "=================================================================\n",
      "Total params: 1,490,538\n",
      "Trainable params: 1,489,386\n",
      "Non-trainable params: 1,152\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = Sequential()\n",
    "\n",
    "model.add(Conv2D(32, kernel_size=3, strides=1, padding='same', activation=None, input_shape=(32, 32, 3)))\n",
    "model.add(BatchNormalization(scale=False))\n",
    "model.add(Activation('relu'))\n",
    "model.add(Conv2D(32, kernel_size=3, strides=1, padding='same'))\n",
    "model.add(BatchNormalization(scale=False))\n",
    "model.add(Activation('relu'))\n",
    "model.add(MaxPooling2D(pool_size=2))\n",
    "model.add(Dropout(0.25))\n",
    "\n",
    "model.add(Conv2D(64, kernel_size=3, strides=1, padding='same'))\n",
    "model.add(BatchNormalization(scale=False))\n",
    "model.add(Activation('relu'))\n",
    "model.add(Conv2D(64, kernel_size=3, strides=1, padding='same'))\n",
    "model.add(BatchNormalization(scale=False))\n",
    "model.add(Activation('relu'))\n",
    "model.add(MaxPooling2D(pool_size=2))\n",
    "model.add(Dropout(0.25))\n",
    "\n",
    "model.add(Conv2D(128, kernel_size=3, strides=1, padding='same'))\n",
    "model.add(BatchNormalization(scale=False))\n",
    "model.add(Activation('relu'))\n",
    "model.add(Conv2D(128, kernel_size=3, strides=1, padding='same'))\n",
    "model.add(BatchNormalization(scale=False))\n",
    "model.add(Activation('relu'))\n",
    "model.add(Conv2D(128, kernel_size=3, strides=1, padding='same'))\n",
    "model.add(BatchNormalization(scale=False))\n",
    "model.add(Activation('relu'))\n",
    "model.add(MaxPooling2D(pool_size=2))\n",
    "model.add(Dropout(0.25))\n",
    "\n",
    "model.add(Flatten())\n",
    "\n",
    "model.add(Dense(512, activation='relu'))\n",
    "model.add(Dropout(0.5))\n",
    "model.add(Dense(10, activation='softmax'))\n",
    "\n",
    "adam = Adam(lr=1e-3)\n",
    "model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy'])\n",
    "\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 49000 samples, validate on 1000 samples\n",
      "Epoch 1/10\n",
      "49000/49000 [==============================] - 55s - loss: 1.6731 - acc: 0.3898 - val_loss: 1.3539 - val_acc: 0.5350\n",
      "Epoch 2/10\n",
      "49000/49000 [==============================] - 52s - loss: 1.2440 - acc: 0.5616 - val_loss: 1.0952 - val_acc: 0.6160\n",
      "Epoch 3/10\n",
      "49000/49000 [==============================] - 52s - loss: 1.0458 - acc: 0.6378 - val_loss: 1.2002 - val_acc: 0.6300\n",
      "Epoch 4/10\n",
      "49000/49000 [==============================] - 52s - loss: 0.9314 - acc: 0.6824 - val_loss: 0.7532 - val_acc: 0.7410\n",
      "Epoch 5/10\n",
      "49000/49000 [==============================] - 52s - loss: 0.8488 - acc: 0.7125 - val_loss: 0.7524 - val_acc: 0.7480\n",
      "Epoch 6/10\n",
      "49000/49000 [==============================] - 52s - loss: 0.7744 - acc: 0.7403 - val_loss: 0.6467 - val_acc: 0.7750\n",
      "Epoch 7/10\n",
      "49000/49000 [==============================] - 52s - loss: 0.7053 - acc: 0.7665 - val_loss: 0.7719 - val_acc: 0.7440\n",
      "Epoch 8/10\n",
      "49000/49000 [==============================] - 51s - loss: 0.6542 - acc: 0.7812 - val_loss: 0.7824 - val_acc: 0.7560\n",
      "Epoch 9/10\n",
      "49000/49000 [==============================] - 52s - loss: 0.6054 - acc: 0.7978 - val_loss: 0.5800 - val_acc: 0.8120\n",
      "Epoch 10/10\n",
      "49000/49000 [==============================] - 52s - loss: 0.5667 - acc: 0.8114 - val_loss: 0.5223 - val_acc: 0.8330\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(X, Y, batch_size=32, epochs=10, validation_split=0.02)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plot history"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n9MJ8MAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25382b885c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(2,1,1)\n",
    "\n",
    "plt.plot(history.history['acc'])\n",
    "plt.plot(history.history['val_acc'])\n",
    "plt.ylabel('accuracy')\n",
    "plt.xlabel('epoch')\n",
    "plt.legend(['train','val'], loc='upper left')\n",
    "plt.title('model accuracy')\n",
    "\n",
    "plt.subplot(2,1,2)\n",
    "\n",
    "plt.plot(history.history['loss'])\n",
    "plt.plot(history.history['val_loss'])\n",
    "plt.ylabel('loss')\n",
    "plt.xlabel('epoch')\n",
    "plt.legend(['train','val'], loc='upper right')\n",
    "plt.title('model loss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###### Save / Load weights"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model.save_weights('CIFAR10_weights.h5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model.load_weights('CIFAR10_weights.h5')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Predict on the test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 9952/10000 [============================>.] - ETA: 0s"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.55933418922424316, 0.81740000000000002]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(X_te, Y_te, batch_size=32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[8 2 1 3 5 7 7 9 4 7 7 2 6 7 8 7 1 2 8 6 7 9 8 9 8 2 1 4 8 6]\n",
      "[8 2 1 5 3 7 7 9 4 7 5 2 6 7 0 7 1 2 8 6 7 9 8 9 8 2 1 4 8 6]\n"
     ]
    }
   ],
   "source": [
    "indicis = np.random.choice(np.arange(X_te.shape[0]), size=30)\n",
    "preds = model.predict(X_te[indicis])\n",
    "print(np.argmax(Y_te[indicis], axis=1))\n",
    "print(np.argmax(preds, axis=1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[3 5 7 8]\n",
      "[5 3 5 0]\n"
     ]
    }
   ],
   "source": [
    "x = np.not_equal(np.argmax(Y_te[indicis], axis=1), np.argmax(preds, axis=1))\n",
    "x = np.argwhere(x==True).flatten().tolist()\n",
    "print(np.argmax(Y_te[indicis[x]], axis=1))\n",
    "print(np.argmax(preds[x], axis=1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x253e96268d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i, n in enumerate(x):\n",
    "    plt.subplot(1, len(x), i + 1)\n",
    "    n = indicis[n]\n",
    "    plt.imshow(X_te[n])\n",
    "    plt.title(np.argmax(Y_te[n]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAR9pl/IfY6SEAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x253e8a8ef60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i, n in enumerate(x):\n",
    "    plt.subplot(1, len(x), i + 1)\n",
    "    plt.title(np.argmax(preds[n]))\n",
    "    n = indicis[n]\n",
    "    plt.imshow(X_te[n])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
